package com.fsds.crem.web.timetask;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;

import com.fsds.crem.core.constant.Globals;
import com.fsds.crem.core.util.ApplicationContextUtil;
import com.fsds.crem.core.util.ExcelUtil;
import com.fsds.crem.core.util.ExceptionUtil;
import com.fsds.crem.core.util.LogUtil;
import com.fsds.crem.core.util.ResourceUtils;
import com.fsds.crem.web.entity.EmailMessage;
import com.fsds.crem.web.entity.SaleDailyReport;
import com.fsds.crem.web.entity.TimeTaskLog;
import com.fsds.crem.web.service.EmailMessageService;
import com.fsds.crem.web.service.SaleDailyReportService;
import com.fsds.crem.web.service.TimeTaskLogService;

public class ReportTimeTask {
	
	
	public void reportRun(){
		
		// 批次日志信息
		TimeTaskLog log = new TimeTaskLog();
		
		try {
			
			// 当前日期
			Calendar c = Calendar.getInstance();
	        c.setTime(new Date());
			log.setCreateDate(c.getTime());
			log.setBeginTime(c.getTime());
			log.setReportName("销售报表"+new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
			
			// 执行报表批次
			this.run(c.getTime(),"totalJob.kjb");
			log.setState(Globals.TIME_TASK_RUN_SUCCESS);
			log.setContent("批次执行成功");
		} catch (Exception e) {
			log.setState(Globals.TIME_TASK_RUN_FAIL);
			log.setContent("异常信息："+ExceptionUtil.getExceptionMessage(e));
			e.printStackTrace();
			LogUtil.error(e.getMessage(), e);
		} finally {
			
			log.setEndTime(new Date());
			
			// 记录批次日志信息
			TimeTaskLogService timeTaskLogService = 
					(TimeTaskLogService) ApplicationContextUtil.getBean("timeTaskLogService");
			
			timeTaskLogService.saveTimeTaskLog(log);
		}
		
	}
	
	public void run(Date currentDate,String jobName) throws Exception {
		
		LogUtil.info("~~~~~~~~~~~~~~~~~~~~~~~begin~~~~~~~~~~~~~~");
		
		// 当前日期
		Calendar c1 = Calendar.getInstance();
        c1.setTime(currentDate);  
        
		// 开始跑kettle，若未全部日结，则发邮件说明次日进行补跑
		String jobname = ResourceUtils.getSysPath() + "kettle/" + jobName;
		
		KettleEnvironment.init();

		// jobname 是Job脚本的路径及名称
		JobMeta jobMeta = new JobMeta(jobname, null);
		System.out.println(jobMeta.getFilename());
		Job job = new Job(null, jobMeta);

		// 向Job 脚本传递参数，脚本中获取参数值：${参数名}
		job.setVariable("jobdateym", new SimpleDateFormat("yyyyMM").format(c1.getTime()));
		LogUtil.info("~~~~~~~~~~YM:"+new SimpleDateFormat("yyyyMM").format(c1.getTime()));

		c1.add(Calendar.DAY_OF_MONTH, -1); // 前一天
		LogUtil.info("~~~~~~~~~~前一天:"+new SimpleDateFormat("yyyyMMdd").format(c1.getTime()));
		job.setVariable("jobdateymr", new SimpleDateFormat("yyyyMMdd").format(c1.getTime()));
		job.start();
		job.waitUntilFinished();

		LogUtil.info("job错误数量："+job.getErrors()+"======");
		
		if (job.getErrors() > 0) {

			LogUtil.info("执行kettle job发生异常");
			throw new KettleException("执行kettle job发生异常");
		}
		else {

			// 汇出Excel
			SaleDailyReportService reportService = 
					(SaleDailyReportService)ApplicationContextUtil.getBean("saleDailyReportService");
			SaleDailyReport params = new SaleDailyReport();
			
			Map<String, Object> debtorsMap = new HashMap<String, Object>();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
			
			ExcelUtil util = new ExcelUtil();
			
			// 多个sheet页导出   begin
			// 当前月第一天
//			Calendar begin = Calendar.getInstance();
//			begin.setTime(currentDate);
//			begin.set(Calendar.DAY_OF_MONTH,1);
//			String fristDay = new SimpleDateFormat("yyyy年MM月dd日").format(begin.getTime());
//			
//			Calendar end = Calendar.getInstance();
//			end.setTime(currentDate);
//			
//			List<String> sheetNameList = new ArrayList<String>();
//			
//			while(begin.getTime().before(end.getTime())){
//				
//				Date reportDate = begin.getTime();
//				
//				LogUtil.info("报表日期："+new SimpleDateFormat("yyyy年MM月dd日").format(reportDate));
//				
//				begin.add(Calendar.DAY_OF_MONTH, 1);
//				
//				params.setCreateDate(sdf.format(begin.getTime()));
//				List<SaleDailyReport> saleDailyReportList = reportService.findAllBySearch(params);
//				
//				if(saleDailyReportList != null && saleDailyReportList.size() > 0){
//					
//					Map<String, Object> map = new HashMap<String,Object>();
//					
//					String beginStr = sdf.format(reportDate);
//					String dayNo = beginStr.substring(beginStr.length() - 2);
//					
//					dataToMapBySheet(map,saleDailyReportList,reportDate);
//					
//					debtorsMap.put("day"+dayNo, map);
//					sheetNameList.add("sheet"+dayNo);
//				}
//			}
			
			// 导出excel
//			String fileUrl = util.transformAndDownloadExcel(debtorsMap,
//					"saleDailyReport_email_many.xls", "销售报表",
//					sheetNameList.toArray(new String[sheetNameList.size()]));
//			String fileUrl = util.transformAndDownloadExcel(debtorsMap,
//					"saleDailyReport_email.xls", "销售报表");
//			
//			EmailMessageService emailMessageService = 
//					(EmailMessageService) ApplicationContextUtil.getBean("emailMessageService");
//			EmailMessage emailMessage = new EmailMessage();
//			emailMessage.setReportType(Globals.REPORT_TYPE_YINFU_SALE_DAY);
//			emailMessage.setAttachmenName("销售报表"+fristDay+"-"+new SimpleDateFormat("MM月dd日").format(c1.getTime())+".xls");
//			emailMessage.setAttachmentUrl(fileUrl);
//			emailMessage.setState(Globals.EMAIL_STATE_NOTSENT);
//			emailMessage.setEmailContent("附件为今日销售报表，请查收，谢谢");
//			emailMessage.setTemplateName("email.ftl");
//			
//			emailMessageService.createEmailMessage(emailMessage);
			
			// end

			// 单一日期导出 begin
			params.setCreateDate(sdf.format(currentDate));
			List<SaleDailyReport> saleDailyReportList = reportService.findAllBySearch(params);
			if(saleDailyReportList != null && saleDailyReportList.size() > 0){
				dataToMapBySheet(debtorsMap, saleDailyReportList, c1.getTime());
				
				String fileUrl = util.transformAndDownloadExcel(debtorsMap,
						"saleDailyReport_email.xls", "销售报表");
				
				EmailMessageService emailMessageService = 
						(EmailMessageService) ApplicationContextUtil.getBean("emailMessageService");
				EmailMessage emailMessage = new EmailMessage();
				emailMessage.setReportType(Globals.REPORT_TYPE_YINFU_SALE_DAY);
				emailMessage.setAttachmenName("销售报表-"+new SimpleDateFormat("yyyy年MM月dd日").format(c1.getTime())+".xls");
				emailMessage.setAttachmentUrl(fileUrl);
				emailMessage.setState(Globals.EMAIL_STATE_NOTSENT);
				emailMessage.setEmailContent("附件为今日销售报表，请查收，谢谢");
				emailMessage.setTemplateName("email.ftl");
				
				emailMessageService.createEmailMessage(emailMessage);
			}
			else{
				
				throw new Exception("门店未日结，批次失败");
			}
			
			// end
			
		}
		
		LogUtil.info("~~~~~~~~~~~~~~~~~~~~~~~end~~~~~~~~~~~~~~");
	}
	
	/**
	 * 每一个sheet页设置数据
	 * 
	 * @param debtorsMap
	 * @param saleDailyReportList
	 * @param calendar
	 */
	public void dataToMapBySheet(Map<String, Object> debtorsMap,List<SaleDailyReport> saleDailyReportList,
			Date reportDate){
		
		int fuyingNum = 0;
		int jinguNum = 0;
		int pizhouNum = 0;
		
		for(SaleDailyReport saleDailyReport : saleDailyReportList){
			
			if ("10000".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10000", saleDailyReport);
			} else if ("10005".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10005", saleDailyReport);
			} else if ("10009".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}

				debtorsMap.put("report10009", saleDailyReport);
			} else if ("10010".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10010", saleDailyReport);
			} else if ("10011".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10011", saleDailyReport);
			} else if ("10013".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10013", saleDailyReport);
			} else if ("10015".equals(saleDailyReport.getNodeCode())) {

				fuyingNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10015", saleDailyReport);
			} else if ("10100".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10100", saleDailyReport);
			} else if ("10101".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10101", saleDailyReport);
			} else if ("10102".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10102", saleDailyReport);
			} else if ("10105".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10105", saleDailyReport);
			} else if ("10106".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10106", saleDailyReport);
			} else if ("10107".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10107", saleDailyReport);
			} else if ("10108".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10108", saleDailyReport);
			} else if ("10109".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10109", saleDailyReport);
			} else if ("10110".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10110", saleDailyReport);
			} else if ("10111".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10111", saleDailyReport);
			} else if ("19999".equals(saleDailyReport.getNodeCode())) {

				jinguNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report19999", saleDailyReport);
			} else if ("03100".equals(saleDailyReport.getNodeCode())) {

				pizhouNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report03100", saleDailyReport);
			} else if ("10007".equals(saleDailyReport.getNodeCode())) {

				pizhouNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report10007", saleDailyReport);
			} else if ("03102".equals(saleDailyReport.getNodeCode())) {

				pizhouNum++;
				
				// 达成率
				if(StringUtils.isNotEmpty(saleDailyReport.getAchieveRate())) {
					
					saleDailyReport.setAchieveRate(saleDailyReport.getAchieveRate() + "%");
				}
				
				// 毛利率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleAgioRate())) {
					
					saleDailyReport.setSaleAgioRate(saleDailyReport.getSaleAgioRate() + "%");
				}
				
				// 成交率
				if(StringUtils.isNotEmpty(saleDailyReport.getTransactionRate())) {
					
					saleDailyReport.setTransactionRate(saleDailyReport.getTransactionRate() + "%");
				}
				
				// 耗损率
				if(StringUtils.isNotEmpty(saleDailyReport.getPurchMoneyRate())) {
					
					saleDailyReport.setPurchMoneyRate(saleDailyReport.getPurchMoneyRate() + "%");
				}
				
				// 折扣率
				if(StringUtils.isNotEmpty(saleDailyReport.getSaleGrossProfitRate())) {
					
					saleDailyReport.setSaleGrossProfitRate(saleDailyReport.getSaleGrossProfitRate() + "%");
				}
				
				debtorsMap.put("report03102", saleDailyReport);
			}
		}
		
		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
		debtorsMap.put("SaleDailyReportDate", reportDate);
		debtorsMap.put("SaleDailyReportUser", "user");
		debtorsMap.put("SaleDailyDate", format.format(reportDate));
		debtorsMap.put("title","销售日报表（"+format.format(reportDate)+"）");

		debtorsMap.put("fuyingNum", fuyingNum);
		debtorsMap.put("jinguNum", jinguNum);
		debtorsMap.put("pizhouNum", pizhouNum);
	}
}
